<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
	xmlns:aml="http://schemas.microsoft.com/aml/2001/core" 
	xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
	xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006"
	xmlns:o="urn:schemas-microsoft-com:office:office"
	xmlns:v="urn:schemas-microsoft-com:vml"
	xmlns:w10="urn:schemas-microsoft-com:office:word"
	xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
	xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
	xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2"
	xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core"
	exclude-result-prefixes="aml dt ve o v w10 w wx wsp sl">
	
	<xsl:output method="xml" indent="yes" />
	

	<!-- Default: keep everything that it not excluded -->
	<xsl:template match="@*|node()">
		<xsl:copy>
			<xsl:apply-templates select="@*|node()"/>
		</xsl:copy>
	</xsl:template>

	<xsl:template match="processing-instruction()"/>

	<xsl:template match="w:wordDocument">
		<xsl:text>&#xA;</xsl:text>
		<html>
			<head>
				<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
			</head>
			<xsl:apply-templates/>
		</html>
	</xsl:template>

	<xsl:template match="w:body">
		<xsl:text>&#xA;  </xsl:text>
		<body>
			<xsl:apply-templates/>
			<xsl:text>&#xA;  </xsl:text>
		</body>
		<xsl:text>&#xA;</xsl:text>
	</xsl:template>

	<!-- Section -->
	<xsl:template match="wx:sect">
		<xsl:text>&#xA;</xsl:text>
		<div class="section">
			<xsl:apply-templates/>
		<xsl:text>&#xA;</xsl:text>
		</div>
	</xsl:template>

	<xsl:template match="wx:sub-section">
		<xsl:apply-templates/>
	</xsl:template>

	<!-- Paragraph Styles -->

	<xsl:template match="w:p">
		<xsl:text>&#xA;</xsl:text>
		<xsl:choose>
			<xsl:when test="w:pPr/w:pStyle/@w:val">
				<p class="{w:pPr/w:pStyle/@w:val}">
					<xsl:apply-templates/>
				</p>
			</xsl:when>
			<xsl:otherwise>
				<p>
					<xsl:apply-templates/>
				</p>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

	<!-- omit empty paragraphs -->
	<!-- <xsl:template match="w:p[not(node()) or not(node()[2])]"/> -->
	
	<!-- Paragraph Borders - keep text that might occur in the border group, but ditch the border. -->
	<xsl:template match="wx:pBdrGroup">
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template match="wx:borders"></xsl:template>
	
	<!-- Character Styles -->
	<xsl:template match="w:r[w:rPr/w:rStyle]">
		<span class="{w:rPr/w:rStyle/@w:val}">
			<xsl:apply-templates/>
		</span>
	</xsl:template>

	<xsl:template match="w:r[w:rPr/w:smallCaps]">
		<span class='sc'>
			<xsl:apply-templates/>
		</span>
	</xsl:template>

	<xsl:template match="w:r[w:rPr/w:caps/@w:val='off' and not(w:rPr/w:rStyle)]">
		<span class='lc'>
			<xsl:apply-templates/>
		</span>
	</xsl:template>

	<!-- Font Formatting -->
	
	<xsl:template match="w:r[w:rPr/w:b]">
		<b><xsl:apply-templates/></b>
	</xsl:template>

	<xsl:template match="w:r[w:rPr/w:i]">
		<i><xsl:apply-templates/></i>
	</xsl:template>

	<!-- Word Metadata that we don't need -->
	<xsl:template match="o:DocumentProperties"/>
	<xsl:template match="w:shapeDefaults"/>
	<xsl:template match="w:fonts"/>
	<xsl:template match="w:ignoreSubtree"/>
	<xsl:template match="w:styles"/>
	<xsl:template match="w:docPr"/>
	<xsl:template match="w:pPr"/>
	<xsl:template match="w:rPr"/>
	<xsl:template match="w:sectPr"/>
	<xsl:template match="w:lists"/>

	<!-- remove Word comments -->
	<xsl:template match="aml:annotation"/>

	<!-- Text -->
	<xsl:template match="w:t">
		<xsl:apply-templates/>
	</xsl:template>

	<xsl:template match="w:r">
		<xsl:apply-templates/>
	</xsl:template>

	<!-- Tables -->
	<xsl:template match="w:tbl">
		<xsl:text>&#xA;</xsl:text>
		<table>
			<xsl:apply-templates/>
		<xsl:text>&#xA;</xsl:text>
		</table>
	</xsl:template>
	
	<xsl:template match="w:tblPr"/>
	<xsl:template match="w:tblPrEx"/>
	<xsl:template match="w:tblGrid"/>
	<xsl:template match="w:gridCol"/>
	<xsl:template match="w:trPr"/>

	<xsl:template match="w:tr">		
		<xsl:text>&#xA;	</xsl:text>
		<tr>
			<xsl:apply-templates/>
		<xsl:text>&#xA;	</xsl:text>
		</tr>
	</xsl:template>
	
	<xsl:template match="w:tc">	
		<xsl:text>&#xA;		</xsl:text>
		<td>
			<xsl:if test="w:tcPr/w:shd[@w:fill]">
				<xsl:attribute name="style">
					<xsl:text>background-color: #</xsl:text>
					<xsl:value-of select="w:tcPr/w:shd/@w:fill"/>
					<xsl:text>;</xsl:text>
				</xsl:attribute>
			</xsl:if>
			<xsl:if test="w:tcPr/w:gridSpan[@w:val]">
				<xsl:attribute name="colspan">
					<xsl:value-of select="w:tcPr/w:gridSpan/@w:val"/>
				</xsl:attribute>
			</xsl:if>
			<xsl:apply-templates/>
		<xsl:text>&#xA;		</xsl:text>
		</td>
	</xsl:template>	

	<xsl:template match="w:tcPr"/>

	<!-- bookmarks - start only -->
	<xsl:template match="aml:annotation[@w:type='Word.Bookmark.Start']">
	    <a id="{@w:name}"/>
	</xsl:template>
	<xsl:template match="aml:annotation[@w:type='Word.Bookmark.End']"/>

	<!-- fields -->
	<xsl:template match="w:instrText">
	    <xsl:text>{{</xsl:text>
	    <xsl:apply-templates/>
	    <xsl:text>}}</xsl:text>
	</xsl:template>
	
	<xsl:template match="w:fldChar"/>

	<xsl:template match="wx:t">
	    <xsl:value-of select="@wx:val"/>
	</xsl:template>

	<!-- other stuff to ignore -->
	<xsl:template match="wx:margin-left"/>
	<xsl:template match="wx:margin-right"/>
	<xsl:template match="w:divs"/>
		
	<xsl:template match="wx:shd"/>

		
	<!-- ** STUFF TO WORK ON **
	<xsl:template match="aml:annotation"/>

	<xsl:template match="wx:apo"/>
	<xsl:template match="w:lang"/>

	<xsl:template match="w:p[w:pPr/w:pStyle/@w:val='SPACER']"></xsl:template>

	<xsl:template match="w:r[w:rPr/w:rStyle/@w:val='FootnoteReference' and child::w:footnote]">
		<xsl:apply-templates/>
	</xsl:template>

	<xsl:template match="w:r[w:rPr/w:rStyle/@w:val='FootnoteReference' and ancestor::w:r[w:rPr/w:rStyle/@w:val='FootnoteReference']]"/>
	<xsl:template match="w:r[w:rPr/w:rStyle/@w:val='VNSP']"/>

	<xsl:template match="wx:font"/>

	<xsl:template match="w:rStyle"/>
	<xsl:template match="w:pStyle"/>
-->

	<!-- Footnotes and Endnotes -->
	
	<xsl:template match="w:p[w:pPr/w:pStyle/@w:val='FootnoteText']">
		<xsl:apply-templates/>
	</xsl:template>

	<xsl:template match="w:footnote">
		<footnote>
			<xsl:apply-templates/>
		</footnote>
	</xsl:template>

	<xsl:template match="w:footnoteRef"/>

	<xsl:template match="w:sym">
		<symbol font="{@w:font}" hex="{@w:char}"/>
	</xsl:template>

	<xsl:template match="w:endnote">
		<endnote>
			<xsl:apply-templates/>
		</endnote>
	</xsl:template>
	
	<!-- linked images -->
	<xsl:template match="v:shape">
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template match="w:pict">
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template match="v:shapetype"/>
	
	<xsl:template match="v:imagedata">
		<img src="{@src}"/>
	</xsl:template>

	<!-- Hyperlinks -->
	<xsl:template match="w:hlink">
		<a>
			<xsl:attribute name="href">
	    	    <xsl:value-of select="@w:dest"/>
		    	<xsl:if test="@w:bookmark and @w:bookmark!=''">
	    	        <xsl:text>#</xsl:text>
	    	        <xsl:value-of select="@w:bookmark"/>
		    	</xsl:if>
			</xsl:attribute>
			<xsl:apply-templates/>
		</a>
	</xsl:template>
	
	<!-- Hyphens -->
	<xsl:template match="w:softHyphen"><!--<xsl:text>&#x00ad;</xsl:text>--></xsl:template>
	<xsl:template match="w:noBreakHyphen"><xsl:text>&#x2011;</xsl:text></xsl:template>

	<!-- Spaces -->
	<xsl:template match="w:tab"><xsl:text>&#x0009;</xsl:text></xsl:template>
	<xsl:template match="w:r[w:rPr/w:rStyle/@w:val='FigureSpace']"><xsl:text>&#x2007;</xsl:text></xsl:template>
	<xsl:template match="w:br"><br/></xsl:template>
	
	<!-- embedded images, etc. -->
	<xsl:template match="w:binData"/>
	<xsl:template match="w:ocx"/>
	<xsl:template match="v:fill"/>

<!-- ** space character codes from master2items.xsl **
	<xsl:template match="spc"><xsl:text> </xsl:text></xsl:template>
	<xsl:template match="nbs"><xsl:text>&#x00a0;</xsl:text></xsl:template>
	<xsl:template match="emsp"><xsl:text>&#x2003;</xsl:text></xsl:template>
	<xsl:template match="ensp"><xsl:text>&#x2002;</xsl:text></xsl:template>
	<xsl:template match="thinsp"><xsl:text>&#x2009;</xsl:text></xsl:template>
	<xsl:template match="hairsp"><xsl:text>&#x200a;</xsl:text></xsl:template>
-->

	<!-- revisions (tracked changes / redlining) -->
	
	<xsl:template match="aml:annotation[@w:type='Word.Deletion']">
		<del datetime="{@aml:createdate}" title="author:{@aml:author}">
			<xsl:apply-templates select="node()"/>
		</del>
	</xsl:template>
	
	<xsl:template match="aml:content">
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template match="w:delText">
		<xsl:apply-templates/>
	</xsl:template>
	
	<xsl:template match="aml:annotation[@w:type='Word.Insertion']">
		<ins datetime="{@aml:createdate}" title="author:{@aml:author}">
			<xsl:apply-templates select="node()"/>
		</ins>
	</xsl:template>
	
</xsl:stylesheet>